Configuración de Comunicación TCP
Esta guía le muestra cómo configurar la comunicación TCP entre su cámara OV80i y dispositivos externos usando Node-RED. Utilice la comunicación TCP para intercambio de datos en tiempo real, control remoto o integración con aplicaciones y sistemas personalizados.
Cuándo usar la comunicación TCP: Transmisión de datos en tiempo real, integración con aplicaciones personalizadas, comunicación bidireccional con sistemas externos, intercambio de datos de alta frecuencia o cuando las APIs HTTP/REST no son adecuadas.
Prerrequisitos
- Sistema de cámara OV80i configurado y conectado
- Dispositivo/sistema objetivo con capacidad de comunicación TCP
- Conectividad de red entre la cámara y el dispositivo objetivo
- Conocimiento básico de direcciones IP y números de puerto
- Receta activa configurada (configuración de imagen e inspección completa)
Paso 1: Verificar Configuración de Red
1.1 Revisar Dirección IP de la Cámara
- Navegue a Configuración del Sistema
- Anote la dirección IP de la cámara (ejemplo: 10.250.0.100)
- Verifique la máscara de subred y configuración de red
1.2 Confirmar Red del Dispositivo Objetivo
Asegure compatibilidad de red:
- Misma subred: La cámara y el dispositivo objetivo deben estar en el mismo rango de red
- Puertos accesibles: Los puertos del dispositivo objetivo no deben estar bloqueados por firewalls
- Conectividad de red: Pruebe con comando ping si es posible
1.3 Requisitos de Red
Requisito | Cámara | Dispositivo Objetivo | Notas |
---|---|---|---|
Rango IP | 10.250.0.100 | 10.250.0.xxx | Deben estar en la misma subred |
Máscara de Subred | 255.255.255.0 | 255.255.255.0 | Configuración estándar |
Acceso a Puerto | 49155 (ejemplo) | 49155 (ejemplo) | Evitar puertos reservados |
Firewall | Permitir tráfico TCP | Permitir tráfico TCP | En ambas direcciones |
Paso 2: Acceder al Editor Node-RED
2.1 Navegar al Bloque IO
- Haga clic en "IO Block" en el menú de migas de pan de la receta, O
- Seleccione "Configure I/O" desde el Editor de Recetas
2.2 Abrir Editor Node-RED
- Haga clic en
Configure IO
para ingresar al editor de flujos de Node-RED - Verifique que la interfaz de Node-RED cargue correctamente
Punto de control: Debe ver el editor de flujos de Node-RED con la paleta de nodos a la izquierda.
Paso 3: Configurar Entrada TCP (Recepción de Datos)
3.1 Agregar Nodo de Entrada TCP
- Ubique el nodo "tcp in" en el panel izquierdo (sección Network)
- Arrastre el nodo "tcp in" al lienzo de flujo
- Haga doble clic en el nodo para configurar
3.2 Configurar Ajustes de Entrada TCP
Configuración del nodo:
Ajuste | Valor | Descripción |
---|---|---|
Tipo | Listen on | La cámara actúa como servidor |
Puerto | 49155 | Puerto donde la cámara escucha |
Modo de datos | Stream | Flujo continuo de datos |
Tipo de datos | UTF8 | Comunicación basada en texto |
Topic | (opcional) | Categorización del mensaje |
3.3 Pasos para Configurar Entrada TCP
- Configuración del servidor:
- Seleccione "Listen on port" (modo servidor)
- Ingrese el número de puerto (ejemplo: 49155)
- Manejo de datos:
- Modo de datos: Seleccione "Stream" para datos continuos
- Tipo de datos: Elija "UTF8" para texto o "Buffer" para binario
- Configuraciones avanzadas:
- Carácter de nueva línea: Deje en blanco a menos que se requiera un delimitador específico
- Topic: Identificador opcional para enrutamiento de mensajes
- Haga clic en
Done
para guardar la configuración
3.4 Guía para Selección de Puertos
Rango de Puertos | Uso | Recomendación |
---|---|---|
1-1023 | Reservados por sistema | Evitar |
1024-49151 | Puertos registrados | Verificar disponibilidad |
49152-65535 | Dinámicos/privados | Recomendado |
Paso 4: Configurar Salida TCP (Envío de Datos)
4.1 Agregar Nodo de Salida TCP
- Ubique el nodo "tcp out" en el panel izquierdo (sección Network)
- Arrastre el nodo "tcp out" al lienzo de flujo
- Haga doble clic en el nodo para configurar
4.2 Configurar Ajustes de Salida TCP
Configuración del nodo:
Ajuste | Valor | Descripción |
---|---|---|
Tipo | Connect to | La cámara actúa como cliente |
Host | 192.168.0.200 | Dirección IP del dispositivo objetivo |
Puerto | 49155 | Puerto del dispositivo objetivo |
Modo | Client | Conexión saliente |
4.3 Pasos para Configurar Salida TCP
- Configuración de conexión:
- Tipo: Seleccione "Connect to" (modo cliente)
- Host: Ingrese la dirección IP del dispositivo objetivo
- Puerto: Ingrese el número de puerto del dispositivo objetivo
- Opciones de conexión:
- Modo: Mantener como "Client"
- Finalizar conexión: Configurar según caso de uso
- Formato de datos:
- Base64: Usualmente deshabilitado para datos de texto
- TLS: Habilitar solo si se requiere conexión segura
- Haga clic en
Done
para guardar la configuración
Paso 5: Crear Flujo de Comunicación
5.1 Construir el Flujo Completo
Cree un flujo que pueda enviar y recibir datos TCP:
- Agregue estos nodos al lienzo:
- Nodo Inject (para disparar mensajes)
- Nodo Function (para procesamiento de mensajes)
- Nodo TCP Out (para enviar datos)
- Nodo TCP In (para recibir datos)
- Nodos Debug (para monitoreo)
5.2 Configurar Nodo Inject
- Haga doble clic en el nodo inject
- Configure los ajustes:
- Nombre: "Send Message"
- Payload: Timestamp
- Topic: (dejar vacío)
- Haga clic en
Done
5.3 Configurar Nodo Function
El nodo function formateará su mensaje saliente:
msg.payload = "Hello from OV80i camera";
return msg;
- Haga doble clic en el nodo function
- Copie el código anterior en la pestaña "On Message"
- Nombre: "Format Message"
- Haga clic en
Done
5.4 Conectar las Conexiones
Conecte los nodos en este orden:
Flujo saliente:
- Inject → Function → TCP Out
- Function → Debug (para ver mensajes salientes)
Flujo entrante:
- TCP In → Debug (para ver mensajes entrantes)
5.5 Estructura Completa del Flujo
Su flujo final debe tener:
- Inject conectado a Function
- Function conectado a TCP Out y a Debug
- TCP In conectado a un nodo Debug separado
Resultado: Puede enviar mensajes haciendo clic en el botón inject y ver tanto mensajes salientes como entrantes en el panel debug.
Paso 6: Configurar Formato de Mensaje
6.1 Definir Formato de Mensaje
Mantenga la estructura del mensaje simple:
Tipo de Mensaje | Formato | Ejemplo |
---|---|---|
Texto simple | Cadena de texto plano | "Hello from camera" |
Actualizaciones de estado | Texto con información | "STATUS: READY" |
Valores de datos | Formato clave-valor | "TEMPERATURE: 25.5" |
6.2 Ejemplos de Mensajes Personalizados
Puede modificar el nodo function para diferentes tipos de mensajes:
Mensaje de estado simple:
msg.payload = "Camera Ready";
return msg;
Mensaje con timestamp:
msg.payload = "Time: " + new Date().toLocaleString();
return msg;
Datos con valores:
msg.payload = "INSPECTION_COUNT: 42";
return msg;
Paso 7: Desplegar y Probar Configuración
7.1 Desplegar Flujo Node-RED
- Haga clic en el botón
Deploy
(esquina superior derecha) - Verifique el mensaje de éxito en el despliegue
- Revise los indicadores de estado de los nodos:
- Punto verde: Conexión exitosa
- Punto rojo: Error de conexión
- Punto amarillo: Intentando conexión
7.2 Probar Comunicación TCP
7.2.1 Prueba Básica de Conectividad
Usando herramientas de línea de comandos:
# Probar conexión TCP (Linux/Mac)
telnet [camera-ip] [port]
# Ejemplo: telnet 10.250.0.100 49155
# Probar con netcat
nc [camera-ip] [port]
# Ejemplo: nc 10.250.0.100 49155
Windows PowerShell:
Test-NetConnection -ComputerName 10.250.0.100 -Port 49155
7.2.2 Enviar Mensajes de Prueba
- Conectarse al puerto TCP de la cámara
- Enviar comandos de prueba:
- "STATUS" → Debe recibir respuesta de estado
- "TRIGGER" → Debe activar inspección
- "INVALID" → Debe manejar comando desconocido
7.2.3 Monitorear Salida Debug
- Abrir panel debug de Node-RED (barra lateral derecha)
- Enviar mensajes de prueba vía TCP
- Verificar que la salida debug muestre:
- Mensajes entrantes
- Resultados del procesamiento
- Respuestas salientes
7.3 Lista de Verificación de Validación
Prueba | Resultado Esperado | Estado |
---|---|---|
Conexión TCP | Conexión exitosa al puerto de la cámara | ☐ |
Recepción de mensajes | Debug muestra mensajes entrantes | ☐ |
Procesamiento de mensajes | Nodo function procesa correctamente | ☐ |
Envío de respuesta | Dispositivo objetivo recibe respuestas | ☐ |
Manejo de errores | Mensajes inválidos manejados adecuadamente | ☐ |
Paso 8: Integración con el Sistema de Inspección
8.1 Conectar con Disparadores de Inspección
Vincule la comunicación TCP con el flujo de inspección:
- Agregue nodo "All Block Outputs" (si no está presente)
- Conecte resultados de inspección a la salida TCP
- Formatee datos de inspección para transmisión TCP
8.2 Integración de Datos de Inspección
Nodo function para procesar resultados de inspección:
// Obtener resultados de inspección desde All Block Outputs
const results = msg.payload;
// Extraer información clave
const inspectionSummary = {
result: results.pass ? "PASS" : "FAIL",
timestamp: new Date().toISOString(),
processing_time: results.processing_time,
roi_count: results.roi_results ? results.roi_results.length : 0
};
// Formatear para transmisión TCP
msg.payload = JSON.stringify(inspectionSummary);
return msg;
8.3 Control Bidireccional
Habilitar control remoto vía TCP:
// Manejar comandos remotos
const command = msg.payload.toString().toUpperCase();
switch(command) {
case "START_INSPECTION":
// Activar secuencia de inspección
global.set("trigger_inspection", true);
msg.payload = "INSPECTION_STARTED";
break;
case "STOP_INSPECTION":
// Detener secuencia de inspección
global.set("trigger_inspection", false);
msg.payload = "INSPECTION_STOPPED";
break;
case "CHANGE_RECIPE":
// Lógica de cambio de receta
msg.payload = "RECIPE_CHANGED";
break;
}
return msg;
Paso 9: Solución de Problemas Comunes
9.1 Problemas de Conexión
Problema | Síntomas | Solución |
---|---|---|
No se puede conectar | Indicador rojo de estado | Verificar dirección IP y puerto |
Caídas de conexión | Estado amarillo intermitente | Verificar estabilidad de red |
Errores de timeout | Respuestas retrasadas | Ajustar configuraciones de timeout |
Conflictos de puerto | Conexión rechazada | Usar número de puerto diferente |
9.2 Problemas de Transmisión de Datos
Problema | Síntomas | Solución |
---|---|---|
No se reciben datos | Debug muestra mensajes vacíos | Verificar configuración de formato de datos |
Datos corruptos | Texto ilegible en debug | Verificar codificación (UTF8/Buffer) |
Pérdida de mensajes | Mensajes faltantes | Verificar estabilidad de red |
Problemas con mensajes grandes | Datos truncados | Usar mensajes más cortos |
9.3 Técnicas de Depuración
Solución sistemática de problemas:
- Habilitar nodos debug en cada paso
- Monitorear logs de Node-RED para errores
- Probar primero con clientes TCP simples
- Verificar conectividad de red con ping
¡Éxito! Su Comunicación TCP Está Lista
Su sistema de comunicación TCP ahora puede:
- Enviar y recibir datos entre la cámara y dispositivos externos
- Procesar mensajes simples para comunicación básica
- Monitorear flujo de datos con nodos debug
- Manejar comunicación básica de red para sus aplicaciones
Mantenimiento Continuo
Revisiones Regulares del Sistema
- Monitorear estabilidad de conexión a lo largo del tiempo
- Verificar que la transmisión de datos funcione consistentemente
- Revisar logs de debug para detectar patrones de error
- Probar comunicación después de cambios en la red
Próximos Pasos
Después de configurar la comunicación TCP básica:
- Pruebe con sus sistemas externos usando la conexión establecida
- Personalice formatos de mensaje según sus necesidades específicas
- Agregue lógica más compleja conforme crezcan sus requerimientos
- Considere otros métodos de comunicación si TCP no cubre todas las necesidades
🔗 Véase También
- MQTT Communication Setup
- RS-232 Communication Setup
- Connect to PLC (Ethernet/IP, PROFINET)
- Node-RED Basics
- Overview Node-RED Custom Blocks
- IP & Network Discovery Failures
Para aplicaciones de alto rendimiento:
- Reducir frecuencia de mensajes
- Agrupar múltiples mensajes
- Usar formato binario para datos grandes
- Implementar compresión
Técnicas de Depuración
Solución sistemática de problemas:
- Habilitar nodos debug en cada paso
- Monitorear logs de Node-RED para errores
- Usar herramientas de monitoreo de red (Wireshark)
- Probar primero con clientes TCP simples